`ifndef INSTF_ID_V
`define INSTF_ID_V


`include "defines.v"

// 将指令向译码模块传递
module instf_id(
    input  wire                         clk         ,
    input  wire                         rstn        ,

    // from instruction fetch
    input  wire[`InstAddrWidth - 1 : 0] inst_addr_i ,
    input  wire[`InstWidth - 1 : 0]     inst_i      ,

    // to id
    output wire[`InstAddrWidth - 1 : 0] inst_addr_o ,
    output wire[`InstWidth - 1 : 0]     inst_o
);

// 指令地址传递
pipe_dff #(32) inst_addr_dff(
    .clk        (clk)           ,		
    .rstn	    (rstn)          ,
    .hold_en	(1'b0)          ,
    .def_data   (`INST_ZERO_ADDR) ,
    .data_i     (inst_addr_i)   ,
    .data_o	    (inst_addr_o)
);

// 指令传递
pipe_dff #(32) inst_dff(
    .clk        (clk)       ,		
    .rstn	    (rstn)      ,
    .hold_en	(1'b0)      ,
    .def_data   (`INST_NOP) ,
    .data_i     (inst_i)    ,
    .data_o	    (inst_o)
);

endmodule


`endif // INSTF_ID_V